Skip to content

feat: reglas por carpeta y /loop-task en Pi + v3.4.0 (Release B) - #26

Merged
lacasoft merged 4 commits into
masterfrom
feat/pi-agent-release-b
Oct 30, 2026
Merged

lacasoft merged 4 commits into
masterfrom
feat/pi-agent-release-b

Conversation

@lacasoft

@lacasoft lacasoft commented Oct 30, 2026 •

Copy link
Copy Markdown
Owner

Summary

Release B del plan de compatibilidad con Pi Agent (Fases 06 y 07) y release v3.4.0. Con esto, dev-starter-kit funciona completo en Pi: contexto, guardrails, monorepos y ciclos con verificador. Para Claude Code no cambia nada.

  • Reglas por carpeta en Pi (monorepos). Las reglas de .claude/rules/ con paths: entran como en Claude Code: la primera vez que el agente lee o edita un archivo de su carpeta, la extensión anexa la regla al resultado, sin mezclar stacks, y otra vez después de compactar. claude-rules.cjs gana appliesTo.
  • /loop-task en Pi. La extensión corre loop.cjs gate --approval al cerrar cada turno (agent_before_settle), como el hook Stop de Claude: mismo verificador, tope y protecciones.
    • Si el verificador falla, Pi sigue con el error a la vista.
    • En verde, el agente repasa el diff y escribe el Resumen para la persona.
    • Pi pregunta a la persona si aprueba el cierre; si no, pide qué falta y el ciclo sigue.
    • Sin interfaz, el ciclo queda awaiting-approval hasta loop.cjs approve o reject --reason "…" en la terminal de la persona.
  • Quien hace no aprueba:
    • pre-bash niega que el agente corra approve o reject.
    • En Pi la aprobación es una confirmación explícita. En Claude, la revisión del reviewer es una instrucción que loop.cjs no puede comprobar.
  • loop.cjs: gate --approval, approve y reject. Sin --approval la puerta de Claude se comporta igual: sus 32 pruebas anteriores no cambiaron.
  • Docs: skill loop-task, sección de Pi y tabla del ciclo en el README, aviso del instalador y CHANGELOG 3.4.0. Pins a #v3.4.0.

Test plan

  • npm run validate (58 comprobaciones) y node --test: 198 pruebas en verde, más 7 de integración que se omiten sin PI_BIN.
  • Con PI_BIN (Pi 1.4.0, modelo simulado): 205 en verde.
    • Monorepo: al leer apps/api entra la regla de NestJS sin la de Next.js, al leer apps/web entra la de Next.js sin la de NestJS, y releer apps/api no la repite.
    • Ciclo en rojo: el error del verificador llega al modelo y el ciclo se agota al tope.
    • Ciclo en verde: pide el resumen sin mencionar al reviewer, queda awaiting-approval sin cerrarse solo, y approve lo cierra.
  • loop.cjs: 6 pruebas nuevas.
    • En verde pide el resumen y, con él, espera.
    • Mientras espera repite la petición y no cuenta turnos.
    • approve cierra y reject devuelve el ciclo con el motivo; sin un ciclo esperando, ambos fallan.
    • La puerta de Claude ignora un ciclo en espera.
    • pre-bash niega approve y reject.
  • claude-rules.cjs: 2 pruebas nuevas de appliesTo (carpetas, rutas relativas, fuera del proyecto, **/*.ts, corchetes escapados).
  • De punta a punta con un modelo real (Claude Sonnet 5.5 vía API en Pi 1.4.0, sin interfaz, USD 0.08): /skill:loop-task arreglar la función suma — verificador: npm test — tope: 4 turnos sobre un bug real (a - b).
    • El agente arrancó el ciclo, corrigió el bug y escribió el resumen. La puerta lo mandó a repasar el diff y el ciclo quedó awaiting-approval en el turno 2 sin cerrarse solo.
    • loop.cjs approve desde la terminal lo cerró (passed). El único archivo cambiado fue suma.js.
  • CI en verde, incluido el job pi: sus 7 pruebas corrieron dentro de Pi 1.4.0, ninguna omitida.

Después del merge: tag anotado v3.4.0 sobre el commit de merge y smoke con npx -y github:lacasoft/dev-starter-kit#v3.4.0 --pi.

lacasoft added 4 commits October 30, 2026 01:18
appliesTo compara los globs de paths: con la ruta relativa a la raíz, como
Claude Code. globToRegex respeta los caracteres escapados (\[, \]) que el
instalador usa en carpetas con corchetes.
Para Pi Agent, que no tiene subagentes: con el verificador en verde y el
resumen escrito, gate --approval deja el ciclo en awaiting-approval y lo
cierra approve o lo devuelve al trabajo reject --reason. pre-bash niega que el
agente corra approve o reject. Sin --approval, la puerta de Claude no cambia.
La extensión anexa cada regla con paths: la primera vez que se lee o edita un
archivo de su carpeta (y otra vez tras compactar), y corre la puerta del ciclo
en agent_before_settle: si falla, Pi sigue con el error; en verde, la persona
aprueba el cierre (sin interfaz, queda esperando). Pruebas de integración
dentro de Pi 1.4.0 con el modelo simulado.
@lacasoft
lacasoft merged commit e9aa861 into master Oct 30, 2026
2 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant